// pages/order/order.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    activeTab: 0, // 0:全部 1:待付款 2:待发货 3:待收货
    orderList: [],
    tabStatus: [
      {}, // 全部
      { payment_status: 'unpaid' }, // 待付款
      { payment_status: 'paid', status: 'pending' }, // 待发货
      { payment_status: 'paid', status: 'shipped' }  // 待收货
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    let tab = Number(options.tab) || 0;
    this.setData({ activeTab: tab }, () => {
      this.fetchOrders();
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.fetchOrders()
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  onTabChange(e) {
    const index = Number(e.currentTarget.dataset.index)
    this.setData({ activeTab: index }, () => {
      this.fetchOrders()
    })
  },

  fetchOrders() {
    const statusQuery = this.data.tabStatus[this.data.activeTab]
    wx.cloud.callFunction({
      name: 'queryOrders',
      data: statusQuery,
      success: res => {
        const list = (res.result.orders || []).map(order => ({
          ...order,
          _statusText: this.getStatusText(order)
        }))
        this.setData({ orderList: list })
      }
    })
  },

  getStatusText(order) {
    if (order.payment_status === 'unpaid') return '待付款'
    if (order.payment_status === 'paid' && order.status === 'pending') return '待发货'
    if (order.payment_status === 'paid' && order.status === 'shipped') return '待收货'
    if (order.status === 'completed') return '已完成'
    if (order.status === 'canceled') return '已取消'
    return ''
  },

  onOrderTap(e) {
    const orderId = e.currentTarget.dataset.id;
    const status = e.currentTarget.dataset.status;
    // 仅待付款订单可跳转到支付页面
    if (status === 'unpaid') {
      wx.navigateTo({
        url: `/pages/payment/payment?orderId=${orderId}`
      });
    }
  },
})